|
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**) ОТДЕЛ Строки;
(*============================================================================*
* НАЗНАЧЕНИЕ: строки для памятки
*============================================================================*)
ИСПОЛЬЗУЕТ
Надел,
Поле,
Памятка,
Вывод ИЗ "..\Обмен\",
Ввод ИЗ "..\Обмен\";
ВИД
Доступ-=ДОСТУП К Вид;
Вид-=НАБОР(Надел.Вид)
памятка :Памятка.Доступ;
(* строки памятки: *)
последняя:ЦЕЛ;
верхняя :ЦЕЛ;
текущая- :ЦЕЛ;
КОН;
(******************************************************************************)
ЗАДАЧА Отрисовка(строки:Доступ);
ПЕР
памятка:Памятка.Доступ;
лк,пк,вс,нс:ЦЕЛ;
цвет:ЗНАК;
со:ЦЕЛ; (* строка отображения *)
строка:ЦЕЛ; (* памятки *)
УКАЗ
лк:=строки.лк;
пк:=строки.пк;
вс:=строки.вс;
нс:=строки.нс;
памятка:=строки.памятка;
строка:=строки.верхняя;
ОТ со:=вс+1 ДО нс-1 ВЫП
ЕСЛИ строка = строки.текущая ТО
цвет:=Надел.цОтметкиСтроки
ИНАЧЕ
цвет:=Надел.цСтроки
КОН;
Вывод.ЦветнойПробел(со,лк,со,пк,цвет);
Вывод.ВПрямоуг(со,лк+1,со,пк-1,памятка.строки[строка]^);
УВЕЛИЧИТЬ(строка)
КОН;
Вывод.ЦветнойПробел(вс,лк,вс,пк,Надел.цСтроки);
Вывод.ЦветнойПробел(нс,лк,нс,пк,Надел.цСтроки);
Вывод.Рамка1(вс,лк,нс,пк)
КОН Отрисовка;
(******************************************************************************)
ЗАДАЧА Приём(надел:Надел.Доступ; посылка+:Ввод.Посылка);
ПЕР
строки:Доступ;
УКАЗ
строки:=надел(Доступ);
ДЛЯ посылка ВИДА
| Поле.Отрисовка:
Отрисовка(строки)
| Ввод.ОтМышки:
ЕСЛИ посылка.события = {} ТО
(* просто нажали мышку *)
строки.текущая:=строки.верхняя+посылка.с-1;
Отрисовка(строки)
КОН
| Ввод.ОтКлавиш:
ВЫБРАТЬ посылка.код ИЗ
| 25H,26H: (* <-,^ *)
ЕСЛИ строки.текущая > 0 ТО
УМЕНЬШИТЬ(строки.текущая);
ЕСЛИ строки.текущая < строки.верхняя ТО
строки.верхняя:=строки.текущая
КОН;
Отрисовка(строки)
КОН
| 27H,28H: (* ->,V *)
ЕСЛИ строки.текущая < строки.последняя ТО
УВЕЛИЧИТЬ(строки.текущая);
ЕСЛИ строки.текущая > строки.верхняя+строки.нс-строки.вс-2 ТО
строки.верхняя:=строки.текущая-строки.нс+строки.вс+2
КОН;
Отрисовка(строки)
КОН
ИНАЧЕ
КОН
ИНАЧЕ
КОН
КОН Приём;
(******************************************************************************)
ЗАДАЧА Создать-(верх,лево,строк,колонок:ЦЕЛ; памятка:Памятка.Доступ):Доступ;
ПЕР
строки:Доступ;
УКАЗ
СОЗДАТЬ(строки);
Надел.Подготовить(строки,верх,лево,строк,колонок,{Надел.прВыбираемый},Приём);
строки.памятка:=памятка;
строки.последняя:=памятка.строк-1;
ВОЗВРАТ строки
КОН Создать;
КОН Строки.
|
|